package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.modelo.Cartorio;
import br.com.foxinline.modelo.Cidade;
import br.com.foxinline.modelo.Endereco;
import br.com.foxinline.modelo.Pessoa;
import br.com.foxinline.servico.CartorioServico;
import br.com.foxinline.servico.CidadeServico;
import br.com.foxinline.utilitario.Mensagem;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author cadomeireles
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarCartorio implements Serializable {
    
    @EJB
    CartorioServico cartorioServico;
    @EJB
    CidadeServico cidadeServico;
    
    private Cartorio cartorioPesquisar;
    private Cartorio cartorioVisualizar;
    private Cartorio cartorioDeletar;

    private List<Cartorio> cartorios;
    
    private String visualizarId;
    
    @PostConstruct
    public void init() {
        instanciar();
        delegar();
    }    

    private void instanciar() {
        this.cartorioDeletar = new Cartorio();
        this.cartorioPesquisar = new Cartorio();
        this.cartorioPesquisar.setTitular(new Pessoa());
        this.cartorioPesquisar.setEndereco(new Endereco());
        this.cartorios = new ArrayList<Cartorio>();
    }

    private void delegar() {
        Map<String, String> parametros = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        this.visualizarId = parametros.get("cartorioId");

        if (this.visualizarId != null) {
            this.cartorioVisualizar = cartorioServico.pesquisar(Long.parseLong(this.visualizarId));
        }
    }

    public void pesquisar() {        
        this.cartorios = cartorioServico.pesquisar(this.cartorioPesquisar);
    }
    
    public void limpar() {
        instanciar();
    }

    public void deletar() {
        cartorioServico.deletar(this.cartorioDeletar);
        pesquisar();
        Mensagem.messagemInfo("Cartorio excluído com sucesso!");
    }

    public List<Cidade> autocompletarCidade(String query) {
        return cidadeServico.autocompletar(query);
    }
    
    public Cartorio getCartorioPesquisar() {
        return cartorioPesquisar;
    }

    public void setCartorioPesquisar(Cartorio cartorioPesquisar) {
        this.cartorioPesquisar = cartorioPesquisar;
    }

    public Cartorio getCartorioVisualizar() {
        return cartorioVisualizar;
    }

    public void setCartorioVisualizar(Cartorio cartorioVisualizar) {
        this.cartorioVisualizar = cartorioVisualizar;
    }

    public Cartorio getCartorioDeletar() {
        return cartorioDeletar;
    }

    public void setCartorioDeletar(Cartorio cartorioDeletar) {
        this.cartorioDeletar = cartorioDeletar;
    }

    public List<Cartorio> getCartorios() {
        return cartorios;
    }

    public void setCartorios(List<Cartorio> cartorios) {
        this.cartorios = cartorios;
    }

}
